package per.hx.bs.web.sys.service;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.*;
import per.hx.bs.entity.sys.SysRoleDO;

import java.util.List;

/**
 * 角色控制服务
 *
 * @author HuXing
 * @date 2018/3/22  19:44
 */
@FeignClient(value = "Huxingbs-Sys-Service")
public interface SysRoleService {
    /**
     * 通过id获取角色
     *
     * @param roleId 角色Id
     * @return 角色信息
     */
    @GetMapping(value = "sys-service/role/{roleId}")
    SysRoleDO getOne(@PathVariable("roleId") Long roleId);

    /**
     * 创建角色
     *
     * @param sysRoleDO 角色信息
     * @return 影象的行数
     */
    @PostMapping(value = "sys-service/role/save")
    int save(@RequestBody SysRoleDO sysRoleDO);

    /**
     * 角色信息更新
     *
     * @param sysRoleDO 角色信息
     * @return 影响的行数
     */
    @PutMapping(value = "sys-service/role/update")
    int update(@RequestBody SysRoleDO sysRoleDO);

    /**
     * 删除 角色信息
     *
     * @param roleId 角色id
     * @return 影响的行数
     */
    @DeleteMapping(value = "sys-service/role/remove")
    int remove(@RequestParam("roleId") Long roleId);

    /**
     * 批量 删除 角色信息
     *
     * @param ids 角色id
     * @return 影响的行数
     */
    @DeleteMapping(value = "sys-service/role/removes")
    int batchRemove(@RequestParam("ids") Long[] ids);

    /**
     * 获取角色信息
     *
     * @return 角色列表
     */
    @GetMapping(value = "sys-service/role/list")
    List<SysRoleDO> list();

    /**
     * 获取角色信息
     *
     * @param userId 用户id
     * @return 角色列表
     */
    @GetMapping(value = "sys-service/role/list/{userId}")
    List<SysRoleDO> list(@PathVariable("userId") Long userId);

    /**
     * 检查标识符是够存在
     *
     * @param roleSign 标识符
     * @return 检查结果
     */
    @GetMapping(value = "sys-service/role/check/{roleSign}")
    Boolean signExit(@PathVariable("roleSign") String roleSign);
}
